/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Soligee.decorador;

import Soligee.controller.facade.sessionFacadeImplements.SessionFacadeBuscarImplements;
import Soligee.model.vo.cadastros.CategoriaVO;
import Soligee.model.vo.cadastros.CidadeVO;
import Soligee.model.vo.cadastros.FornecedorVO;
import Soligee.model.vo.cadastros.MarcaVO;
import Soligee.model.vo.cadastros.PessoaFisicaVO;
import Soligee.model.vo.cadastros.PessoaJuridicaVO;
import Soligee.model.vo.cadastros.PessoaVO;
import Soligee.model.vo.cadastros.RepresentanteVO;
import Soligee.model.vo.cadastros.SubcategoriaVO;
import Soligee.model.vo.cadastros.VendedorVO;
import Soligee.model.vo.lancamentos.BancoVO;
import Soligee.model.vo.lancamentos.FormaPagamentoVO;
import com.icesoft.faces.component.jsfcl.data.DefaultSelectionItems;
import java.util.List;
import javax.faces.model.SelectItem;

/**
 *
 * @author Las
 */
public class DecoradorInicializaCombos {

   //variavel para efetuar as buscas
   private SessionFacadeBuscarImplements facadeBusca;

   public DecoradorInicializaCombos() {
      this.facadeBusca = new SessionFacadeBuscarImplements();
   }

   public DefaultSelectionItems inicializarCampoFornecedor() {
      DefaultSelectionItems itens = new DefaultSelectionItems();
      itens.clear();
      try {
         //String campo_desejado, String oque_buscar,String nomeObjetoAssociado,Class classe
         List<FornecedorVO> listaFornecedores = this.getFacadeBusca().buscarTodos("codPessoa", FornecedorVO.class);
         int j = 0;
         while (j < listaFornecedores.size()) {
            itens.add(new SelectItem(listaFornecedores.get(j).getCodPessoa(), listaFornecedores.get(j).getNome()));
            j++;
         }
      } catch (NullPointerException e) {
         System.err.print("Erro em inicializar o fornecedor:" + e.getMessage());
      }
      return itens;
   }

   public DefaultSelectionItems inicializarFormaPagamento() {
      DefaultSelectionItems itens = new DefaultSelectionItems();
      itens.clear();
      try {
         //String campo_desejado, String oque_buscar,String nomeObjetoAssociado,Class classe
         List<FormaPagamentoVO> listaFormaPagamento = this.getFacadeBusca().buscarTodos("codFormaPagamento", FormaPagamentoVO.class);
         int j = 0;
         while (j < listaFormaPagamento.size()) {
            itens.add(new SelectItem(listaFormaPagamento.get(j).getCodFormaPagamento(), listaFormaPagamento.get(j).getFormaPagamento()));
            j++;
         }
      } catch (NullPointerException e) {
         System.err.print("Erro em inicializar a forma pagamento:" + e.getMessage());
      }
      return itens;
   }

   //metodo para preenchimento do combobox vendedor
   public DefaultSelectionItems inicializaCampoVendedor() {
      DefaultSelectionItems itens = new DefaultSelectionItems();
      itens.clear();
      try {
         //String campo_desejado, String oque_buscar,String nomeObjetoAssociado,Class classe
         List<VendedorVO> listaVendedores = this.getFacadeBusca().buscarTodos("codVendedor", VendedorVO.class);
         int j = 0;
         while (j < listaVendedores.size()) {
            itens.add(new SelectItem(listaVendedores.get(j).getCodVendedor(), listaVendedores.get(j).getNome()));
            j++;
         }
      } catch (NullPointerException e) {
         System.err.print("Erro em inicializar o combobox:" + e.getMessage());
      }
      return itens;
   }


   //metodo para preenchimento do combobox cidades
   public DefaultSelectionItems inicializaCampoCidade(int codEstado) {
      DefaultSelectionItems itens = new DefaultSelectionItems();
      itens.clear();
      try {
         //String campo_desejado, String oque_buscar,String nomeObjetoAssociado,Class classe
         List<CidadeVO> listaCidades = this.getFacadeBusca().buscaTodosComAssociacao("codEstado", codEstado, "codEstado", "codCidade", CidadeVO.class);
         int j = 0;
         while (j < listaCidades.size()) {
            itens.add(new SelectItem(listaCidades.get(j).getCodCidade(), listaCidades.get(j).getNome()));
            j++;
         }
      } catch (NullPointerException e) {
         System.err.print("Erro em inicializar o combobox:" + e.getMessage());
      }
      return itens;
   }

   //monta o combo buscando com uma clausula where, o valor é passado como parametro
   public DefaultSelectionItems montaComboSubCategoriaComCriterio(int valor) {
      SessionFacadeBuscarImplements facade_busca = new SessionFacadeBuscarImplements();
      DefaultSelectionItems itens = new DefaultSelectionItems();
      itens.clear();
      itens.add(new SelectItem(0, "Sub Categorias"));

      try {
         List<SubcategoriaVO> lista_subCategoria = facade_busca.buscaTodosComAssociacao("codCategoria", valor, "codCategoria", "codSubCategoria", SubcategoriaVO.class);
         int s = 0;
         while (s < lista_subCategoria.size()) {
            itens.add(new SelectItem(lista_subCategoria.get(s).getCodSubCategoria(), lista_subCategoria.get(s).getDescricao()));
            s++;
         }
         itens.add(new SelectItem("Nova SubCategoria", "Nova SubCategoria"));
      } catch (NullPointerException e) {
         System.err.print("Erro em inicializar o combobox:" + e.getMessage());
      }
      return itens;
   }


   //monta o combo buscando com uma clausula where, o valor é passado como parametro
   public DefaultSelectionItems montaComboCategoria(int valor) {
      SessionFacadeBuscarImplements facade_busca = new SessionFacadeBuscarImplements();
      DefaultSelectionItems itens = new DefaultSelectionItems();
      itens.clear();
      itens.add(new SelectItem(0, "Categorias"));

      try {
         List<CategoriaVO> lista_categoria = facade_busca.buscaTodosComAssociacao("codMarca", valor, "marcas", "codCategoria", CategoriaVO.class);
         int k = 0;
         while (k < lista_categoria.size()) {
            itens.add(new SelectItem(lista_categoria.get(k).getCodCategoria(), lista_categoria.get(k).getDescricao()));
            k++;
         }
      itens.add(new SelectItem("Nova Categoria", "Nova Categoria"));
      } catch (NullPointerException e) {
         System.err.print("Erro em inicializar o combobox:" + e.getMessage());
      }
      return itens;
   }

   public DefaultSelectionItems inicializarCampoPessoa() {
      DefaultSelectionItems itens = new DefaultSelectionItems();
      itens.clear();
      try {
         //String campo_desejado, String oque_buscar,String nomeObjetoAssociado,Class classe
         List<PessoaVO> listaPessoas = this.getFacadeBusca().buscarTodos("codPessoa", PessoaVO.class);
         int j = 0;
         while (j < listaPessoas.size()) {
            itens.add(new SelectItem(listaPessoas.get(j).getCodPessoa(), listaPessoas.get(j).getNome()));
            j++;
         }
      } catch (NullPointerException e) {
         System.err.print("Erro em inicializar o combobox:" + e.getMessage());
      }
      return itens;
   }

   public DefaultSelectionItems inicializarCampoPessoaJuridica() {
      DefaultSelectionItems itens = new DefaultSelectionItems();
      itens.clear();
      try {
         //String campo_desejado, String oque_buscar,String nomeObjetoAssociado,Class classe
         List<PessoaJuridicaVO> listaPessoas = this.getFacadeBusca().buscarTodos("codPessoa", PessoaJuridicaVO.class);
         int j = 0;
         while (j < listaPessoas.size()) {
            itens.add(new SelectItem(listaPessoas.get(j).getCodPessoa(), listaPessoas.get(j).getNome()));
            j++;
         }
      } catch (NullPointerException e) {
         System.err.print("Erro em inicializar o combobox:" + e.getMessage());
      }
      return itens;
   }

   public DefaultSelectionItems inicializarCampoPessoaFisica() {
      DefaultSelectionItems itens = new DefaultSelectionItems();
      itens.clear();
      try {
         //String campo_desejado, String oque_buscar,String nomeObjetoAssociado,Class classe
         List<PessoaFisicaVO> listaPessoas = this.getFacadeBusca().buscarTodos("codPessoa", PessoaFisicaVO.class);
         int j = 0;
         while (j < listaPessoas.size()) {
            itens.add(new SelectItem(listaPessoas.get(j).getCodPessoa(), listaPessoas.get(j).getNome()));
            j++;
         }
      } catch (NullPointerException e) {
         System.err.print("Erro em inicializar o combobox:" + e.getMessage());
      }
      return itens;
   }

   public DefaultSelectionItems inicializarCampoMarca() {
      DefaultSelectionItems itens = new DefaultSelectionItems();
      itens.clear();
      itens.add(new SelectItem(0, "Marcas"));

      try {
         List<MarcaVO> lista_marca = this.getFacadeBusca().buscarTodos("codMarca", MarcaVO.class);
         int j = 0;
         while (j < lista_marca.size()) {
            itens.add(new SelectItem(lista_marca.get(j).getCodMarca(), lista_marca.get(j).getDescricao()));
            j++;
         }
         itens.add(new SelectItem("Nova Marca", "Nova Marca"));
      } catch (NullPointerException e) {
         System.err.print("Erro em inicializar o combobox:" + e.getMessage());
      }
      return itens;
   }

   public DefaultSelectionItems inicializarCampoMarcaConsulta() {
      DefaultSelectionItems itens = new DefaultSelectionItems();
      itens.clear();
      itens.add(new SelectItem(0, "Marcas"));

      try {
         List<MarcaVO> lista_marca = this.getFacadeBusca().buscarTodos("codMarca", MarcaVO.class);
         int j = 0;
         while (j < lista_marca.size()) {
            itens.add(new SelectItem(lista_marca.get(j).getCodMarca(), lista_marca.get(j).getDescricao()));
            j++;
         }

      } catch (NullPointerException e) {
         System.err.print("Erro em inicializar o combobox:" + e.getMessage());
      }
      return itens;
   }

   //metodo para preenchimento do combobox fornecedor
   public DefaultSelectionItems inicializarCampoFormaPagamento() {
      DefaultSelectionItems itens = new DefaultSelectionItems();
      itens.clear();
      try {
         //String campo_desejado, String oque_buscar,String nomeObjetoAssociado,Class classe
         List<FormaPagamentoVO> listaFormaPagamento = this.getFacadeBusca().buscarTodos("codFormaPagamento", FormaPagamentoVO.class);
         int j = 0;
         while (j < listaFormaPagamento.size()) {
            itens.add(new SelectItem(listaFormaPagamento.get(j).getCodFormaPagamento(), listaFormaPagamento.get(j).getFormaPagamento()));
            j++;
         }
      } catch (NullPointerException e) {
         System.err.print("Erro em inicializar o combobox:" + e.getMessage());
      }
      return itens;
   }

   //metodo para preenchimento do combobox fornecedor
   public DefaultSelectionItems inicializarCampoRepresentante() {
      DefaultSelectionItems itens = new DefaultSelectionItems();
      itens.clear();
      try {
         //String campo_desejado, String oque_buscar,String nomeObjetoAssociado,Class classe
         List<RepresentanteVO> listaRepresentantes = facadeBusca.buscarTodos("codPessoa", RepresentanteVO.class);
         int j = 0;
         while (j < listaRepresentantes.size()) {
            itens.add(new SelectItem(listaRepresentantes.get(j).getCodPessoa(), listaRepresentantes.get(j).getNome()));
            j++;
         }
      } catch (NullPointerException e) {
         e.printStackTrace();
         System.err.print("Erro em inicializar o combobox:" + e.getMessage());
      }
      return itens;
   }

   //gets e sets
   public SessionFacadeBuscarImplements getFacadeBusca() {
      return facadeBusca;
   }

   public void setFacadeBusca(SessionFacadeBuscarImplements facadeBusca) {
      this.facadeBusca = facadeBusca;
   }

   //Método Inicializar Campo BANCO
   public DefaultSelectionItems inicializarCampoBanco() {
      DefaultSelectionItems itens = new DefaultSelectionItems();
      itens.clear();
      itens.add(new SelectItem(0, "Bancos"));

      try {
         List<BancoVO> lista_banco = this.getFacadeBusca().buscarTodos("cod_banco", BancoVO.class);
         int j = 0;
         while (j < lista_banco.size()) {
            itens.add(new SelectItem(lista_banco.get(j).getCodBanco(), lista_banco.get(j).getNomeBanco()));
            j++;
         }
         itens.add(new SelectItem("Novo Banco", "Novo Banco"));
      } catch (NullPointerException e) {
         System.err.print("Erro em inicializar o combobox:" + e.getMessage());
      }
      return itens;
   }


   //Método Inicializar Campo BANCO CONSULTA
   public DefaultSelectionItems inicializarCampoBancoConsulta() {
      DefaultSelectionItems itens = new DefaultSelectionItems();
      itens.clear();
      itens.add(new SelectItem(0, "Bancos"));

      try {
         List<BancoVO> lista_banco = this.getFacadeBusca().buscarTodos("cod_banco", BancoVO.class);
         int j = 0;
         while (j < lista_banco.size()) {
            itens.add(new SelectItem(lista_banco.get(j).getCodBanco(), lista_banco.get(j).getNomeBanco()));
            j++;
         }

      } catch (NullPointerException e) {
         System.err.print("Erro em inicializar o combobox:" + e.getMessage());
      }
      return itens;
   }
}
